package com.zhentao.service;

import com.zhentao.classManager.dto.ClassStudentDto;
import com.zhentao.classManager.dto.ExaminationDto;
import com.zhentao.classManager.dto.SAnswerDto;
import com.zhentao.classManager.pojo.SClass;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhentao.classManager.pojo.vo.ClassVo;
import com.zhentao.classManager.pojo.vo.PaperInfoVo;
import com.zhentao.result.Result;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
* @author song-xinhang
* @description 针对表【s_class】的数据库操作Service
* @createDate 2024-07-24 10:08:50
*/
public interface SClassService extends IService<SClass> {
    /**
     * 查询所有班级具体信息
     * @return
     * */
    Result selectClassAll(ClassVo classVo);

    /**
     * 根据班级id查询学生信息
     * @param studentDto
     * @return
     * */
    Result selectStudentByClass(ClassStudentDto studentDto);

    /**
     * 添加或编辑班级信息
     * @param sClass
     * @return
     */
    Result classAddOrEdit(SClass sClass);


    /**
     * 根据班级id批量删除班级信息
     * @param classId
     * @return
     */
    Result deleteBatchClass(Integer[] classId);


    /**
     * 查询所有教师信息
     * @return
     */
    Result selectTeacherAll();


    /**
     * 班级信息导出
     * @return
     */
    void exportClass(HttpServletResponse response) throws IOException;


    /**
     * 修改学生班级
     * @param userId
     * @param classId
     * @return
     */
    Result changeClass(Integer userId, Integer classId);


    /**
     * 移除学生班级
     * @param userId
     * @return
     */
    Result removeClassStudent(Integer userId);


    /**
     * 班级考试信息
     * @param examinationDto
     * @return
     */
    Result classExaminationInfo(ExaminationDto examinationDto);

    /**
     * 根据考试id查询考试题目
     * @param examinationId
     * @return
     */
    Result examinationQuestion(Integer examinationId);

    /**
     * 自动批阅
     * @param paperInfoVos
     * @return
     */
    Result autoMarking(List<PaperInfoVo> paperInfoVos);

    /**
     * 查询历史考试信息
     * @param sAnswerDto
     * @return
     */
    Result historyExaminationInfo(SAnswerDto sAnswerDto);

    /**
     * 查询历史考试题目学生答案以及正确答案
     * @param userId
     * @param examinationId
     * @return
     */
    Result historyExaminationQuestion(Integer userId, Integer examinationId);

    /**
     * 查询班级信息
     * @param classId
     * @return
     */
    Result selectClassById(Integer classId);

    /**
     * 根据年级查询班级信息日考信息
     * @param classVo
     * @return
     */
    Result selectClassByStage(ClassVo classVo);

    /**
     * 日考信息导出
     * @param response
     */
    void downloadDay(HttpServletResponse response) throws IOException;
}